'''
n ip存储与读取文件统计ip频率 (京东二面题)
 • 生成一个大文件ips.txt,要求120000行，每行随即为172.25.254.0/24段的ip;
 • 读取ips.txt文件统计这个文件中ip出现频率前10的ip；
每一行的内容是172.25.254.{1-255}随机出现
'''
i=0
import random
sums={}
with open("F:/笔记资料/ips,txt","w") as fp:
    while i<120000:
        ip0=random.randint(1,125)
        if ip0 in sums:
            sums[ip0] +=1
        else:
            sums[ip0] =1
        fp.write(f"172.25.254.{ip0}\n")
        i+=1
    print("文件生成完毕")

'''
sorted 语法：
sorted(iterable, cmp=None, key=None, reverse=False)

参数说明：
iterable -- 可迭代对象。
cmp -- 比较的函数，这个具有两个参数，参数的值都是从可迭代对象中取出，此函数必须遵守的规则为，大于则返回1，小于则返回-1，等于则返回0。
key -- 主要是用来进行比较的元素，只有一个参数，具体的函数的参数就是取自于可迭代对象中，指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则，reverse = True 降序 ， reverse = False 升序（默认）。
'''
'''
items获取了key-value对
lambda表达式的item就是当前的key-value对。item[0]表示key，item[1]表示value，所以使用item[1]，就表示按value排序，而使用item[0]，就是按key排序。
'''

sums2={k: v for k,v in sorted(sums.items(),key=lambda item: item[1],reverse=True)}

i=1

for x,y in sums2.items():
    if i==11:
        break
    else:
        print(f"出现频率第{i}的是：172.25.254.{x},它出现的次数为{y}")
        i+=1



